{$M+}
unit uClasseBaseLista;

interface

uses
  Generics.Collections,
  uClasseBase;
type
  TClasseLista = class
  private
    FLista: TList<TObject>;
    procedure SetLista(const Value: TList<TObject>);
  public
    procedure Add(pObjeto:TObject);
    function  DevolveLista:TList<TObject>;
    procedure AdicionarRange(p_ListaObj:TList<TObject>);
    constructor Create;
    destructor Free;
  published
    property Lista:TList<TObject> read FLista write SetLista;
  end;

implementation

uses
  SysUtils;

{ TConsultaBaseLista }

procedure TClasseLista.Add(pObjeto:TObject);
begin
  FLista.Add(pObjeto);
end;

procedure TClasseLista.AdicionarRange(p_ListaObj: TList<TObject>);
begin
  FLista.AddRange(p_ListaObj);
end;

constructor TClasseLista.Create;
begin
  FLista := TList<TObject>.Create;
end;

function TClasseLista.DevolveLista: TList<TObject>;
begin
  result := FLista;
end;

destructor TClasseLista.Free;
var
  i:integer;
begin
  for i:=0 to FLista.Count -1 do
  begin
    TConsultaBase(FLista[i]).Free;
    FLista[i] := nil;
  end;

  FLista.Clear;
  FreeAndNil(FLista);
end;

procedure TClasseLista.SetLista(const Value: TList<TObject>);
begin
  FLista := Value;
end;

end.
